package cn.ms.neural.moduler;

import cn.ms.neural.engine.IEngine;
import cn.ms.neural.moduler.degrade.IDegrade;
import cn.ms.neural.moduler.flowrate.IFlowrate;
import cn.ms.neural.moduler.idempotent.Idempotent;
import cn.ms.neural.moduler.reliable.IReliable;
import cn.ms.neural.moduler.slow.ISlow;
import lombok.Data;

/**
 * The Moduler Entity.
 * 
 * @author lry
 *
 * @param <REQ>
 * @param <RES>
 */
@Data
public class Moduler<REQ, RES> {

	// $NON-NLS-This is core moduler.$
	/**
	 * The flowrate module: 流量控制
	 */
	private IFlowrate<REQ, RES> flowrate;
	/**
	 * The degrade module: 服务降级
	 */
	private IDegrade<REQ, RES> degrade;
	/**
	 * The dempotent module: 幂等SLA
	 */
	private Idempotent<REQ, RES> dempotent;
	/**
	 * The engine module
	 */
	private IEngine<REQ, RES> engine;
	/**
	 * The reliable module
	 */
	private IReliable<REQ, RES> reliable;
	/**
	 * The slow module: 慢性变化
	 */
	private ISlow<REQ, RES> slow;
}
